package com.zjdiepu.www.ibiz.icbc;

import java.util.List;
import java.util.Set;

import com.zjdiepu.www.base.core.AbstractSysUser;
import com.zjdiepu.www.base.enums.type.OperateType;
import com.zjdiepu.www.model.icbc.dto.YwOpenCardHzicbc;
import com.zjdiepu.www.model.icbc.dto.YwOpenCardHzicbcSub;
import com.zjdiepu.www.model.icbc.ext.YwOpenCardHzicbcExt;
import com.zjdiepu.www.model.icbc.vo.YwOpenCardHzicbcSubVo;
import com.zjdiepu.www.response.BooleanResponse;

/**
 * yw_开卡信息_杭州工行Service层操作<br/>
 * @author zhangzhengjian<br/>
 * @time 2017年12月09日 11时48分<br/>
 * @since 1.0<br/>
 */
public interface IYwOpenCardHzicbcService {
	/**
	 * 新增,更新和保存
	 * 
	 * @param YwOpenCardHzicbc 
	 * @param OperateType 操作类型 {@link OperateType}
	 */
	void saveUpdateAndDelete(YwOpenCardHzicbc ywOpenCardHzicbc,OperateType operType);
	
	/**
	 * 条件查询
	 * @date 2017年12月09日 11时48分
	 * @param ywOpenCardHzicbcExt
	 * @return
	 */
	List<YwOpenCardHzicbc> selectByExt(YwOpenCardHzicbcExt ywOpenCardHzicbcExt);
	
	/**
	 * 条件统计
	 * @date 2017年12月09日 11时48分
	 * @param ywOpenCardHzicbcExt
	 * @return
	 */
	int countByExt(YwOpenCardHzicbcExt ywOpenCardHzicbcExt);
	
	/**
	 * 主键查询
	 * @date 2017年12月09日 11时48分
	 * @param id
	 * @return
	 */
	YwOpenCardHzicbc selectById(String id);
	
	/**
	 * 根据主键清除空字段，设置值为null
	 * @date 2017年12月09日 11时48分
	 * @param fieldNames 字段名
	 * @param id 主键
	 */
	void clearEmpty(Set<String> fieldNames, String id);
	/**
	 * 精确统计(=)
	 * @author zhangzhengjian
	 * @time 2017年12月09日 11时48分
	 * @since 1.0
	 * @update
	 * @param sysPower
	 * @return
	 */
	int countRefined(YwOpenCardHzicbc ywOpenCardHzicbc);
	/**
	 * 精确查询(=)
	 * @author zhangzhengjian
	 * @time 2017年12月09日 11时48分
	 * @since 1.0
	 * @update
	 * @param ywOpenCardHzicbc
	 * @return
	 */
	YwOpenCardHzicbc selectRefined(YwOpenCardHzicbc ywOpenCardHzicbc);
	/**
	 * @author zhangzhengjian <br/>
	 * @Title repeat  <br/>
	 * @Description 判断是否重复 <br/>
	 * @param ywOpenCardHzicbc
	 * @return
	 * @version V1.0  <br/>
	 */
	boolean repeat(YwOpenCardHzicbc ywOpenCardHzicbc);
	
	/**
	 * @author xiongxiaotun <br/>
	 * @Title: updateBatch  <br/>
	 * @Description:批量删除/禁用/启用  <br/>
	 * @param modifier 修改人
	 * @param modifierName 修改人名称
	 * @param dpStatus 修改后状态
	 * @param ids 待修改数据ID
	 * @return
	 * @version V1.0  <br/>
	 */
	int updateBatch(String modifier, String modifierName, Integer dpStatus, List<String> ids);

	boolean updateOpenCardBackReason(YwOpenCardHzicbc ywOpenCardHzicbc);

	void saveOpenCardSuccess(YwOpenCardHzicbc ywOpenCardHzicbc);

	BooleanResponse commitYwOpenCardHzicbc(YwOpenCardHzicbcSub ywOpenCardHzicbc,
			AbstractSysUser currentUser);

	void saveYwOpenCardHzicbc(YwOpenCardHzicbcSubVo ywOpenCardHzicbc,AbstractSysUser currentUser);

	void updateOpenCardInfo(YwOpenCardHzicbcSubVo ywOpenCardHzicbcVo);
	
	public void commitDaishenheYwOpenCardHzicbc(YwOpenCardHzicbc ywOpenCardHzicbc, AbstractSysUser currentUser);

	void updateBackOpenCardStatus(YwOpenCardHzicbc ywOpenCardHzicbc, AbstractSysUser user);

	void updateOpencardLine(YwOpenCardHzicbc ywOpenCardHzicbc,
			AbstractSysUser currentUser);

	void saveOpencardLine(YwOpenCardHzicbc ywOpenCardHzicbc,
			AbstractSysUser currentUser);

	void updateLineOpenCardStatus(YwOpenCardHzicbc ywOpenCardHzicbc,
			AbstractSysUser currentUser);

	void updateStopOpenCardStatus(YwOpenCardHzicbc ywOpenCardHzicbc,
			AbstractSysUser currentUser);

	void updateHzicbcOpencardStatus(YwOpenCardHzicbc ywOpenCardHzicbc
			);
	
}
